package com.bigShen.pattern.decorator.main;

import com.bigShen.pattern.decorator.login.old.ILoginService;
import com.bigShen.pattern.decorator.login.old.LoginService;
import com.bigShen.pattern.decorator.login.wrapper.LoginForThirdService;

/**
 * @author : lei.shen
 * @date : 2018/10/7
 */
public class DecoratorMainTest {

    public static void main(String[] args) {

        ILoginService loginService = new LoginService();
        ILoginService loginThirdService = new LoginForThirdService(loginService);

        System.out.println(((LoginForThirdService) loginThirdService).loginForQQ("201810070957_qq"));


            /*

            ===============================================================------
            装饰器模式                          |   适配器模式
            -----------------------------------+---------------------------------
            是一种非常特别的适配器模式            |  可以不保留层级关系
            -----------------------------------+---------------------------------
            装饰者和被装饰者都要实现同一个接口     |  适配者和被适配者没有必然的层级联系
            主要目的是为了扩展，依旧保留OOP关系    |  通常采用代理或者继承形式进行包装
            -----------------------------------+----------------------------------
            满足is-a的关系                      |   满足has-a
            -----------------------------------+----------------------------------
            注重的是覆盖、扩展                   |   注重兼容、转换
            -----------------------------------+----------------------------------


        */

    }

}
